﻿using Admin.NET.Core;
using Magicodes.ExporterAndImporter.Core;
using System.ComponentModel.DataAnnotations;

namespace Admin.NET.Application;

    /// <summary>
    /// 学生基础输入参数
    /// </summary>
    public class StudentBaseInput
    {
        /// <summary>
        /// 序号
        /// </summary>
        public virtual string? Xuhao { get; set; }
        
        /// <summary>
        /// 学号
        /// </summary>
        public virtual string Xh { get; set; }
        
        /// <summary>
        /// 姓名
        /// </summary>
        public virtual string Name { get; set; }
        
        /// <summary>
        /// 性别
        /// </summary>
        public virtual string? Sex { get; set; }

        /// <summary>
        /// 出生日期
        /// </summary>
        public virtual DateTime? Birthday { get; set; }

        /// <summary>
        /// 身份证号
        /// </summary>
        public virtual string? IdCardNum { get; set; }
        
        /// <summary>
        /// 全国学籍号
        /// </summary>
        public virtual string? NationalNum { get; set; }
        
        /// <summary>
        /// 学籍辅号
        /// </summary>
        public virtual string? AssistNum { get; set; }
        
        /// <summary>
        /// 在校
        /// </summary>
        public virtual bool BeAtSchool { get; set; }
        
        /// <summary>
        /// 在籍
        /// </summary>
        public virtual bool BeAtBook { get; set; }

    /// <summary>
    /// 托管
    /// </summary>
    public virtual bool IsTuoguan { get; set; }

    /// <summary>
    /// 手机
    /// </summary>
    public virtual string? Tel { get; set; }

    /// <summary>
    /// 母亲姓名
    /// </summary>
    public string? MotherName { get; set; }

    /// <summary>
    /// 母亲手机
    /// </summary>
    public string? MotherTel { get; set; }

    /// <summary>
    /// 父亲姓名
    /// </summary>
    public string? FatherName { get; set; }

    /// <summary>
    /// 父亲手机
    /// </summary>
    public string? FatherTel { get; set; }

    /// <summary>
    /// 班级
    /// </summary>
    public virtual long BanjiId { get; set; }

        /// <summary>
        /// 教学班
        /// </summary>
        public virtual long JiaoxueBanId { get; set; }
    
        /// <summary>
        /// 备注0
        /// </summary>
        public virtual string? Beizhu0 { get; set; }
        
        /// <summary>
        /// 备注1
        /// </summary>
        public virtual string? Beizhu1 { get; set; }
        
        /// <summary>
        /// 备注2
        /// </summary>
        public virtual string? Beizhu2 { get; set; }
        
        /// <summary>
        /// 创建者姓名
        /// </summary>
        public virtual string? CreateUserName { get; set; }
        
        /// <summary>
        /// 修改者姓名
        /// </summary>
        public virtual string? UpdateUserName { get; set; }
        
    }

    /// <summary>
    /// 学生分页查询输入参数
    /// </summary>
    public class StudentInput : BasePageInput
    {
        /// <summary>
        /// 关键字查询
        /// </summary>
        public string? SearchKey { get; set; }

        /// <summary>
        /// 序号
        /// </summary>
        public string? Xuhao { get; set; }
        
        /// <summary>
        /// 学号
        /// </summary>
        public string? Xh { get; set; }
        
        /// <summary>
        /// 姓名
        /// </summary>
        public string? Name { get; set; }
        
        /// <summary>
        /// 性别
        /// </summary>
        public string? Sex { get; set; }
        
        /// <summary>
        /// 身份证号
        /// </summary>
        public string? IDCardNum { get; set; }
        
        /// <summary>
        /// 全国学籍号
        /// </summary>
        public string? NationalNum { get; set; }
        
        /// <summary>
        /// 学籍辅号
        /// </summary>
        public string? AssistNum { get; set; }
        
        /// <summary>
        /// 在校
        /// </summary>
        public bool? BeAtSchool { get; set; }
        
        /// <summary>
        /// 在籍
        /// </summary>
        public bool? BeAtBook { get; set; }

        /// <summary>
        /// 托管
        /// </summary>
        public bool? IsTuoguan { get; set; }

    /// <summary>
    /// 手机
    /// </summary>
    public string? Tel { get; set; }
        
        /// <summary>
        /// 班级
        /// </summary>
        public long? BanjiId { get; set; }

        /// <summary>
        /// 班级
        /// </summary>
        public long? JiaoxueBanId { get; set; }

    /// <summary>
    /// 班级
    /// </summary>
    public int? Ji { get; set; }
    
    /// <summary>
    /// 备注0
    /// </summary>
    public string? Beizhu0 { get; set; }
        
        /// <summary>
        /// 备注1
        /// </summary>
        public string? Beizhu1 { get; set; }
        
        /// <summary>
        /// 备注2
        /// </summary>
        public string? Beizhu2 { get; set; }
        
    }

    /// <summary>
    /// 学生增加输入参数
    /// </summary>
    public class AddStudentInput : StudentBaseInput
    {
        /// <summary>
        /// 学号
        /// </summary>
        [Required(ErrorMessage = "学号不能为空")]
        public override string Xh { get; set; }
        
        /// <summary>
        /// 姓名
        /// </summary>
        [Required(ErrorMessage = "姓名不能为空")]
        public override string Name { get; set; }
        
        /// <summary>
        /// 在校
        /// </summary>
        [Required(ErrorMessage = "在校不能为空")]
        public override bool BeAtSchool { get; set; }
        
        /// <summary>
        /// 在籍
        /// </summary>
        [Required(ErrorMessage = "在籍不能为空")]
        public override bool BeAtBook { get; set; }

    /// <summary>
    /// 托管
    /// </summary>
    [Required(ErrorMessage = "托管不能为空")] 
    public override bool IsTuoguan { get; set; }

    /// <summary>
    /// 班级
    /// </summary>
    [Required(ErrorMessage = "班级不能为空")]
        public override long BanjiId { get; set; }
        
    }

    /// <summary>
    /// 学生删除输入参数
    /// </summary>
    public class DeleteStudentInput : BaseIdInput
    {
    }

    /// <summary>
    /// 学生更新输入参数
    /// </summary>
    public class UpdateStudentInput : StudentBaseInput
    {
        /// <summary>
        /// 主键Id
        /// </summary>
        [Required(ErrorMessage = "主键Id不能为空")]
        public long Id { get; set; }
        
    }

    /// <summary>
    /// 学生主键查询输入参数
    /// </summary>
    public class QueryByIdStudentInput : DeleteStudentInput
    {

    }
